package com.ruoyi.hisinpbill.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

import java.util.Date;
import java.util.Objects;

/**
 * @ClassName InpBillDetailDo
 * @Author samula
 * @Descripe product by com.doctcloud
 * @Data 2025-09-23 1:21
 **/
public class InpBillDetailDo extends BaseEntity {
    private static final long serialVersionUID = 1L;
    @Excel(name = "患者ID")
    private String patientId;
    @Excel(name = "住院标识号")
    private Integer visitId;
    @Excel(name = "收费序号")
    private Integer itemNo;
    @Excel(name = "项目类别代码")
    private String itemClass;
    @Excel(name = "项目名称")
    private String itemName;
    @Excel(name = "项目代码")
    private String itemCode;
    @Excel(name = "项目规格")
    private String itemSpec;
    @Excel(name = "数量")
    private Integer amount;
    @Excel(name = "单位")
    private String units;
    @Excel(name = "开单科室代码")
    private String orderedBy;
    @Excel(name = "执行科室代码")
    private String performedBy;
    @Excel(name = "应收金额")
    private Double costs;
    @Excel(name = "计价金额")
    private Double charges;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "计价时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date billingDateTime;

    public InpBillDetailDo() {
    }

    public InpBillDetailDo(String patientId, Integer visitId, Integer itemNo, String itemClass, String itemName, String itemCode, String itemSpec, Integer amount, String units, String orderedBy, String performedBy, Double costs, Double charges, Date billingDateTime) {
        this.patientId = patientId;
        this.visitId = visitId;
        this.itemNo = itemNo;
        this.itemClass = itemClass;
        this.itemName = itemName;
        this.itemCode = itemCode;
        this.itemSpec = itemSpec;
        this.amount = amount;
        this.units = units;
        this.orderedBy = orderedBy;
        this.performedBy = performedBy;
        this.costs = costs;
        this.charges = charges;
        this.billingDateTime = billingDateTime;
    }

    public String getPatientId() {
        return patientId;
    }

    public void setPatientId(String patientId) {
        this.patientId = patientId;
    }

    public Integer getVisitId() {
        return visitId;
    }

    public void setVisitId(Integer visitId) {
        this.visitId = visitId;
    }

    public Integer getItemNo() {
        return itemNo;
    }

    public void setItemNo(Integer itemNo) {
        this.itemNo = itemNo;
    }

    public String getItemClass() {
        return itemClass;
    }

    public void setItemClass(String itemClass) {
        this.itemClass = itemClass;
    }

    public String getItemName() {
        return itemName;
    }

    public void setItemName(String itemName) {
        this.itemName = itemName;
    }

    public String getItemCode() {
        return itemCode;
    }

    public void setItemCode(String itemCode) {
        this.itemCode = itemCode;
    }

    public String getItemSpec() {
        return itemSpec;
    }

    public void setItemSpec(String itemSpec) {
        this.itemSpec = itemSpec;
    }

    public Integer getAmount() {
        return amount;
    }

    public void setAmount(Integer amount) {
        this.amount = amount;
    }

    public String getUnits() {
        return units;
    }

    public void setUnits(String units) {
        this.units = units;
    }

    public String getOrderedBy() {
        return orderedBy;
    }

    public void setOrderedBy(String orderedBy) {
        this.orderedBy = orderedBy;
    }

    public String getPerformedBy() {
        return performedBy;
    }

    public void setPerformedBy(String performedBy) {
        this.performedBy = performedBy;
    }

    public Double getCosts() {
        return costs;
    }

    public void setCosts(Double costs) {
        this.costs = costs;
    }

    public Double getCharges() {
        return charges;
    }

    public void setCharges(Double charges) {
        this.charges = charges;
    }

    public Date getBillingDateTime() {
        return billingDateTime;
    }

    public void setBillingDateTime(Date billingDateTime) {
        this.billingDateTime = billingDateTime;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        InpBillDetailDo that = (InpBillDetailDo) o;
        return Objects.equals(patientId, that.patientId) && Objects.equals(visitId, that.visitId) && Objects.equals(itemNo, that.itemNo) && Objects.equals(billingDateTime, that.billingDateTime);
    }

    @Override
    public int hashCode() {
        return Objects.hash(patientId, visitId, itemNo, billingDateTime);
    }

    @Override
    public String toString() {
        return "InpBillDetailDo{" +
                "patientId='" + patientId + '\'' +
                ", visitId=" + visitId +
                ", itemNo=" + itemNo +
                ", itemClass='" + itemClass + '\'' +
                ", itemName='" + itemName + '\'' +
                ", itemCode='" + itemCode + '\'' +
                ", itemSpec='" + itemSpec + '\'' +
                ", amount=" + amount +
                ", units='" + units + '\'' +
                ", orderedBy='" + orderedBy + '\'' +
                ", performedBy='" + performedBy + '\'' +
                ", costs=" + costs +
                ", charges=" + charges +
                ", billingDateTime=" + billingDateTime +
                '}';
    }
}
